<?php
/**
 * 员工
 * Created by PhpStorm.
 * User: echa
 * Date: 2018/1/25
 * Time: 16:26
 *
 */

namespace App\Services\Warehouse;


class EmployeesService extends PublicService {

    //员工表单ID
    //protected  $Formid='BD_Empinfo';


    public function __construct()
    {
       parent::__construct(Config('k3cloud.Employees'));
    }


    /**
     *查看
     *1.formid：业务对象表单Id（必录）
    2.data：Json格式数据（详情参考Json格式数据）（必录）
    2.1.CreateOrgId：创建者组织，字符串类型（非必录）
    2.2.Number：单据编号，字符串类型（用编号查询必录）
    2.3.Id：表的主键Id（用Id查询时必录）
     *
     */
    public  function ViewEmployees($Number='',$Id=''){
        return $this->view($Number,$Id);
    }

    /**
        保存
     *1.formid：业务对象表单Id（必录）
    2.data：Json格式数据（详情参考Json格式数据）（必录）
        2.1.Creator：创建者名字（非必录）
        2.2.NeedUpDateFields：需要保存的字段,格式["fieldkey1","fieldkey2","entitykey1",...]，数组类型(非必录)
        2.3.NeedReturnFields：需要返回的结果字段,格式["fieldkey","entitykey.fieldkey",...]（非必录）
        2.4.IsDeleteEntry：是否删除分录，默认True删除（非必录）
        2.5.SubSystemId：菜单所在子系统Id（非必录）
        2.6.IsVerifyBaseDataField：是否验证所有的基础资料，默认False不验证（非必录）
        2.7.IsEntryBatchFill：是否批量填充分录：默认为Ture（非必录）
        2.8.Model：表单实体数据（必录）
     * 参数数组说明
     * FID 员工ID  默认为0 表示 新增，非0则是修改员工信息
     * FName 员工名称
     * FStaffNumber  员工编号
     * FMobile  手机号
         * FPostDeptFNumber  所属部门编号
     * FPostFNumber  就任岗位编号
     */
    public function SaveEmployees($ArrData){
        if(!is_array($ArrData)){
            return false;
        }
        if(empty($ArrData['FID'])){
            $ArrData['FID']="0";
        }
        $data=[
                "FID"=>$ArrData['FID'],
                "FName"=>$ArrData['FName'],
                "FStaffNumber"=>$ArrData['FStaffNumber'],
                "FMobile"=>$ArrData['FMobile'],
                "FTel"=>"",
                "FEmail"=>"",
                "FDescription"=>"",
                "FAddress"=>"",
                "FUseOrgId"=>[
                    "FNumber"=>Config('k3cloud.organization')
                ],
                "FCreateOrgId"=>[
                    "FNumber"=>Config('k3cloud.organization')
                ],
                "FPostEntity"=>[
                    [
                        'FWorkOrgId'=>[
                            'FNumber'=>Config('k3cloud.organization')
                        ],
                        'FPostDept'=>[
                            'FNumber'=>$ArrData['FPostDeptFNumber']
                        ],
                        'FPost'=>[
                            'FNumber'=>$ArrData['FPostFNumber']
                        ]
                    ]
                ]
            ];
        return  $this->save($data);

    }


    /**
       提交
     *
     * 1.formid：业务对象表单Id（必录）
    2.data：Json格式数据（详情参考Json格式数据）（必录）
        2.1.CreateOrgId：创建者组织，字符串类型（非必录）
        2.2.Numbers：单据编号集合，格式["billNo1","billNo1",...]，数组类型（必录）
     * $Numbers
     */

    public function  SubmitEmployees($Numbers=[]){
        return $this->submit($Numbers);
    }


    /**
        审核
     * 1.formid：业务对象表单Id（必录）
    2.data：Json格式数据（详情参考Json格式数据）（必录）
        2.1.CreateOrgId：创建者组织，字符串类型（非必录）
        2.2.Numbers：单据编号集合，格式["billNo1","billNo1",...]，数组类型（必录）
     *
     */
    public function AuditEmployees($Numbers=[]){
        return $this->audit($Numbers);
    }

    /**
     *单据列表查询
     * 1.data：Json格式数据（详情参考Json格式数据）（必录）
    1.1.FormId：业务对象表单Id（必录）
    1.2.FieldKeys：字段keys，字符串类型用逗号分隔，比如"key1,key2..."（必录）
    1.3.FilterString：过滤（非必录）  FNumber=''
    1.4.OrderString：排序字段（非必录）
    1.5.TopRowCount：总行数（非必录）
    1.6.StartRow：开始行（非必录）
    1.7.Limit：最大行数，不能超过2000（非必录）
     */
    public function ExecuteBillQueryEmployees($FieldKeys='',$FilterString='',$OrderString='',$TopRowCount=0,$StartRow=0,$Limit=20)
    {
            if (empty($FieldKeys)) {
                $FieldKeys='FNumber,FPersonID,FName,FStaffNumber,FMobile,FTel,FEmail,FAddress,FDocumentStatus,FForbidStatus,FCreateDate';
            }
           return $this->ExecuteBillQuery($FieldKeys,$FilterString,$OrderString,$TopRowCount,$StartRow,$Limit);
    }


    /**
        获取员工基本信息
     * 参数说明
     * $FStaffNumber   员工编号
     * 字段说明
     * FID  员工ID
     * FStaffNumber  员工编号
     * FName  员工名称
     * FMobile  手机号
     * FEmail  电子邮箱
     * FAddress  详细地址
     * FDocumentStatus 数据状态
     * FForbidStatus   禁用状态
     * FCreateDate  创建时间
     * FPostDept 所属部门ID
     * FPostDept.FName  所属部门
     * FPost  就任岗位ID
     * FPost.FName  就任岗位
     */
    public function DetailsEmployees($FStaffNumber=''){
        $FieldKeys='FID,FStaffNumber,FName,FMobile,FEmail,FAddress,FDocumentStatus,FForbidStatus,FCreateDate,FPostDept.FNumber,FPostDept.FName,FPost.FNumber,FPost.FName';
        $FilterString="FStaffNumber='".$FStaffNumber."'";
        $info=$this->ExecuteBillQuery($FieldKeys,$FilterString);
        if($info){
            return $info;
        }else{
            return false;
        }
    }


}